#include #include using namespace std; void main() { //winning combinations are 168,14,112,896,146,292,584,546 //1022 int xMoves = 0; int oMoves = 0; char currentPlayer = 'X'; bool gameOver = false; int move; while(!gameOver) { cout << currentPlayer << "'s turn:\n"; for(int i = 1; i <= 9;i++) { if((xMoves & (int)pow(2,i)) == (int)pow(2,i)) { cout << 'X'; } else if((oMoves & (int)pow(2,i)) == (int)pow(2,i)) { cout << 'O'; } else { cout << i; } if(i == 3 || i == 6) { cout << "\n-----\n"; } if(i %3 != 0) { cout << "|"; } } cout << endl; do { cin >> move; } while((((int)pow(2,move) & xMoves) == (int)pow(2,move)) || (((int)pow(2,move) & oMoves) == (int)pow(2,move)) || move < 1 || move > 9); if(currentPlayer == 'X') { //(int) - integer type cast xMoves = (xMoves | (int)(pow(2,move))); } else { //(int) - integer type cast oMoves = (oMoves | (int)(pow(2,move))); } cout << "xMoves = " << xMoves << endl; cout << "oMoves = " << oMoves << endl; //change whose turn it is if(currentPlayer == 'X') { currentPlayer = 'O'; } else { currentPlayer = 'X'; } } //// logical operators - for Boolean expressions //// && and //// || or ////bitwize operators - operate on numbers ////& - and ////| - or ////^ - xor - exclusive or //int i; //i = 23 & 12; //cout << i << endl; // 4 //// 10111 //// 01100 ////&00100 //cin >> i; //if((i&48)==48 ) //{ // cout << "The 16 bit is set to 1\n"; //} //i = 23 | 12; //cout << i << endl;//31 //// 10111 //// 01100 ////|11111 //i = 23 ^ 12; //cout << i << endl; //27 //// 10111 //// 01100 ////^11011 }